PROJECT = "AGV-CONTROL-CORE"
VERSION = "2.0.0"

sys = require "sys"
--本设备BLE MAC地址  1AD473043254（不同开发板的MAC不一样）

--定义初始化变量，防止线程在未初始化完成时启动
    sysok=0--0:未完成 1:已完成（初始化）

sys.taskInit(function ()--初始化线程
    if sysok==0 then

--初始化显示屏
    u8g2.begin({ic = "ssd1306",direction = 0,mode="i2c_hw"})

--初始化电调风扇
    pwm.open(7,21000,50)

--初始化电调频率
    speed=100

--既然已经设置好显示屏了，那就开始启动吧
    u8g2.ClearBuffer()
        u8g2.SetFont(u8g2.font_opposansm12_chinese)
        u8g2.DrawUTF8("AGV核心控制板",20,10)
        u8g2.SetFont(u8g2.font_opposansm12_chinese)
        u8g2.DrawUTF8("当前进程:初始化设备",0,24)
    u8g2.SendBuffer()

--初始化uart用于与电机核心板通讯
    u8g2.ClearBuffer()
        u8g2.SetFont(u8g2.font_opposansm12_chinese)
        u8g2.DrawUTF8("AGV核心控制板",20,10)
        u8g2.SetFont(u8g2.font_opposansm12_chinese)
        u8g2.DrawUTF8("当前进程:启动UART串口",0,24)
    u8g2.SendBuffer()
    uart.setup(1)

--初始化BLE
    u8g2.ClearBuffer()
        u8g2.SetFont(u8g2.font_opposansm12_chinese)
        u8g2.DrawUTF8("AGV核心控制板",20,10)
        u8g2.SetFont(u8g2.font_opposansm12_chinese)
        u8g2.DrawUTF8("当前进程:启动BLE服务",0,24)
    u8g2.SendBuffer()
    nimble.setUUID("srv", string.fromHex("180D"))      -- 服务主UUID         ,  默认值 180D
    nimble.setUUID("write", string.fromHex("FFF1"))    -- 往本设备写数据的UUID,  默认值 FFF1
    nimble.setUUID("indicate", string.fromHex("FFF2")) -- 订阅本设备的数据的UUID,默认值 FFF2
    nimble.init("AGV-CAR")
    blemac=nimble.mac()--先获取MAC地址
    blemac=blemac:toHex()--再把MAC地址翻译成人看得懂的东西
    log.info("BLE MAC",blemac,"本设备的BLE MAC地址")--用串口打印MAC地址是啥玩意
    bledata="nil"--设置一个，不然待会儿后面会报错
    situation="等待指令"--同上

    end
    sysok=1--完成初始化线程
    gpio.setup(12,0)
    gpio.setup(13.0)
end)



sys.taskInit(function()--主线程

    while true and sysok==1 do
        sys.wait(10)
        u8g2.ClearBuffer()
            u8g2.SetFont(u8g2.font_opposansm12_chinese)
            u8g2.DrawUTF8("AGV核心控制板",20,10)
            u8g2.SetFont(u8g2.font_opposansm12_chinese)
            u8g2.DrawUTF8("电调频率:"..tostring(speed).."Hz",0,24)
            u8g2.DrawUTF8(bledata,0,38)
            u8g2.SetFont(u8g2.font_opposansm16_chinese)
            u8g2.DrawUTF8(situation,0,55)
        u8g2.SendBuffer()
    end


end)

sys.taskInit(function ()
    while true and sysok==1 do
        sys.wait(10)

        if bledata=="FF" then
            nimble.send_msg(1, 0,"脉冲设置为"..tostring(speed).."Hz")
            bledata="nil"
        end

        if bledata=="nil" then
            situation="等待指令"
        end
        if bledata=="00" then
            situation="停止"
            speed=0
        end
        if bledata=="AA64" then
            situation="脉冲设置100HZ"
            speed=100
        end
        if bledata=="AAC8" then
            situation="脉冲设置200HZ"
            speed=200
        end
        if bledata=="AA12C0" then
            situation="脉冲设置300HZ"
            speed=300
        end
        if bledata=="AA1900" then
            situation="脉冲设置400HZ"
            speed=400
        end


        if bledata=="BBAA" then
            situation="向前移动"
        end
        if bledata=="BBBB" then
            situation="向后移动"
        end
        if bledata=="BBCC" then
            situation="向左移动"
        end
        if bledata=="BBDD" then
            situation="向右移动"
        end
        if bledata=="BBEE" then
            situation="顺时针转动"
        end
        if bledata=="BBFF" then
            situation="逆时针转动"
        end



        uart.write(1,bledata)
    end
end)




sys.subscribe("BLE_GATT_WRITE_CHR", function(info, data)
    bledata=data:toHex()
end)

sys.run()
